1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.google.common.collect;
18
19 import com.google.common.annotations.GwtCompatible;
20
21 import junit.framework.AssertionFailedError;
22 import junit.framework.TestCase;
23
24
25
26
27
28
29 @GwtCompatible
30 public class ComparisonChainTest extends TestCase {
31 private static final DontCompareMe DONT_COMPARE_ME = new DontCompareMe();
32
33 private static class DontCompareMe implements Comparable<DontCompareMe> {
34 @Override
35 public int compareTo(DontCompareMe o) {
36 throw new AssertionFailedError();
37 }
38 }
39
40 public void testDegenerate() {
41
42 assertEquals(0, ComparisonChain.start().result());
43 }
44
45 public void testOneEqual() {
46 assertEquals(0, ComparisonChain.start()
47 .compare("a", "a")
48 .result());
49 }
50
51 public void testOneEqualUsingComparator() {
52 assertEquals(0, ComparisonChain.start()
53 .compare("a", "A", String.CASE_INSENSITIVE_ORDER)
54 .result());
55 }
56
57 public void testManyEqual() {
58 assertEquals(0, ComparisonChain.start()
59 .compare(1, 1)
60 .compare(1L, 1L)
61 .compareFalseFirst(true, true)
62 .compare(1.0, 1.0)
63 .compare(1.0f, 1.0f)
64 .compare("a", "a", Ordering.usingToString())
65 .result());
66 }
67
68 public void testShortCircuitLess() {
69 assertTrue(ComparisonChain.start()
70 .compare("a", "b")
71 .compare(DONT_COMPARE_ME, DONT_COMPARE_ME)
72 .result() < 0);
73 }
74
75 public void testShortCircuitGreater() {
76 assertTrue(ComparisonChain.start()
77 .compare("b", "a")
78 .compare(DONT_COMPARE_ME, DONT_COMPARE_ME)
79 .result() > 0);
80 }
81
82 public void testShortCircuitSecondStep() {
83 assertTrue(ComparisonChain.start()
84 .compare("a", "a")
85 .compare("a", "b")
86 .compare(DONT_COMPARE_ME, DONT_COMPARE_ME)
87 .result() < 0);
88 }
89
90 public void testCompareFalseFirst() {
91 assertTrue(ComparisonChain.start().compareFalseFirst(true, true).result() == 0);
92 assertTrue(ComparisonChain.start().compareFalseFirst(true, false).result() > 0);
93 assertTrue(ComparisonChain.start().compareFalseFirst(false, true).result() < 0);
94 assertTrue(ComparisonChain.start().compareFalseFirst(false, false).result() == 0);
95 }
96
97 public void testCompareTrueFirst() {
98 assertTrue(ComparisonChain.start().compareTrueFirst(true, true).result() == 0);
99 assertTrue(ComparisonChain.start().compareTrueFirst(true, false).result() < 0);
100 assertTrue(ComparisonChain.start().compareTrueFirst(false, true).result() > 0);
101 assertTrue(ComparisonChain.start().compareTrueFirst(false, false).result() == 0);
102 }
103 }